From: Jonathan Dieter Date: Wed, 9 May 2018 16:22:46 +0000 (+0300) Subject: Move dictionary decompression from zck_read_header to zck_read X-Git-Tag: archive/raspbian/1.1.9+ds1-1+rpi1~1^2~284 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=6994a9d6418f2ed32cd485d5fb191e18c5a6201a;p=zchunk.git Move dictionary decompression from zck_read_header to zck_read Signed-off-by: Jonathan Dieter --- diff --git a/src/lib/comp/comp.c b/src/lib/comp/comp.c index f6aca3e..68f069a 100644 --- a/src/lib/comp/comp.c +++ b/src/lib/comp/comp.c @@ -418,6 +418,11 @@ ssize_t comp_read(zckCtx *zck, char *dst, size_t dst_size, int use_dict) { if(dst_size == 0) return 0; + /* Read dictionary if it exists and hasn't been read yet */ + if(use_dict && !zck->comp.data_eof && zck->comp.data_idx == NULL && + zck->index.first->length > 0 && !zck_import_dict(zck)) + return -1; + size_t dc = 0; char *src = zmalloc(dst_size - dc); if(src == NULL) { @@ -473,7 +478,7 @@ ssize_t comp_read(zckCtx *zck, char *dst, size_t dst_size, int use_dict) { } } if(zck->comp.data_loc == zck->comp.data_idx->comp_length) { - if(comp_end_dchunk(zck, use_dict, zck->comp.data_idx->length) < 0) + if(!comp_end_dchunk(zck, use_dict, zck->comp.data_idx->length)) return -1; if(zck->comp.data_idx == NULL) zck->comp.data_eof = True; diff --git a/src/lib/header.c b/src/lib/header.c index 2b96aa5..5300d7d 100644 --- a/src/lib/header.c +++ b/src/lib/header.c @@ -341,7 +341,7 @@ int read_sig(zckCtx *zck) { return True; } -int zck_read_header(zckCtx *zck) { +int PUBLIC zck_read_header(zckCtx *zck) { VALIDATE_READ(zck); if(!read_lead_1(zck)) @@ -356,8 +356,6 @@ int zck_read_header(zckCtx *zck) { return False; if(!read_sig(zck)) return False; - if(!zck_import_dict(zck)) - return False; return True; }